home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / ATUtilities.lha / ATUtilities / BASIC / ASAVE.BAS < prev    next >
BASIC Source File  |  2000-09-26  |  3KB  |  132 lines

  1. $INCLUDE "REGNAMES.INC"
  2. COLOR 14
  3.  
  4. IF CheckVector(&H49)=0 THEN
  5.  SOUND 2000,2
  6.  PRINT "FEHLER: ATUtilities File Transfer ist nicht installiert!"
  7.  GOTO ende
  8. END IF
  9. GOSUB CmdAuswertung
  10.  
  11. REG %AX,(&H6*256)
  12. CALL INTERRUPT &H49
  13. segment=REG(%ES)
  14. offset=REG(%DI)
  15.  
  16. DEF SEG = segment
  17. a2$=a2$+CHR$(0)
  18. FOR i=1 TO LEN(a2$)
  19.  POKE offset+i-1,ASC(MID$(a2$,i,1))
  20. NEXT
  21. REG %BX,2
  22. REG %AX,0
  23. CALL INTERRUPT &H49
  24. fh=REG(%CX)
  25. IF REG(%BX)=10000 THEN
  26.  a1$=a1$+CHR$(0)
  27.  FOR i=1 TO LEN(a1$)
  28.   POKE offset+i-1,ASC(MID$(a1$,i,1))
  29.  NEXT
  30.  REG %AX,(&H3D*256)
  31.  REG %DS,segment
  32.  REG %DX,offset
  33.  CALL INTERRUPT &H21
  34.  pc=REG(%AX)
  35.  IF (REG(%FLAGS) MOD 2)=0 THEN
  36.   t1=TIMER
  37.   REG %AX,(&H3F*256)
  38.   REG %BX,pc
  39.   REG %CX,16384
  40.   REG %DS,segment
  41.   REG %DX,offset
  42.   CALL INTERRUPT &H21
  43.   bytes=REG(%AX)
  44.   IF (REG(%FLAGS) MOD 2)=1 THEN bytes=0
  45.   p&=bytes
  46.   PRINT "Bytes bertragen:";bytes;
  47.   WHILE bytes>0
  48.    REG %AX,(&H3*256)
  49.    REG %CX,bytes
  50.    REG %BX,fh
  51.    CALL INTERRUPT &H49
  52.    g=REG(%BX)
  53.    IF g<>bytes THEN
  54.     SOUND 2000,2
  55.     PRINT "FEHLER: Fehler beim Schreiben der Amiga-Datei."
  56.     bytes=0
  57.    ELSE
  58.     REG %AX,(&H3F*256)
  59.     REG %BX,pc
  60.     REG %CX,16384
  61.     REG %DS,segment
  62.     REG %DX,offset
  63.     CALL INTERRUPT &H21
  64.     bytes=REG(%AX)
  65.     IF (REG(%FLAGS) MOD 2)=1 THEN bytes=0
  66.     LOCATE ,1
  67.     p&=p&+bytes
  68.     PRINT "Bytes bertragen:";p&;
  69.    END IF
  70.   WEND
  71.   t2=TIMER-t1
  72.   LOCATE ,1
  73.   PRINT p&;"Bytes wurden in";t2;"Sekunden bertragen."
  74.   REG %BX,pc
  75.   REG %AX,(&H3E*256)
  76.   CALL INTERRUPT &H21
  77.  ELSE
  78.   PRINT "FEHLER: PC-Datei "+a1$+"l„át sich nicht ”ffnen."
  79.  END IF
  80.  REG %BX,fh
  81.  REG %AX,(&H1*256)
  82.  CALL INTERRUPT &H49
  83. ELSE
  84.  SOUND 2000,2
  85.  PRINT "FEHLER: Amiga-Datei "+a2$+"l„át sich nicht erstellen."
  86. END IF
  87.  
  88. ende:
  89. COLOR 7
  90. END
  91.  
  92. CmdAuswertung:
  93. cmd$=COMMAND$+CHR$(0)
  94. cmdlen=LEN(COMMAND$)
  95. IF cmdlen>0 THEN
  96.  n=INSTR(cmd$," ")
  97.  IF n=0 THEN GOTO argf
  98.  a1$=LEFT$(cmd$,n-1)
  99.  n2=instr(n+1,cmd$,CHR$(0))
  100.  IF n2=0 THEN GOTO argf
  101.  a2$=MID$(cmd$,n+1,cmdlen-n)
  102. ELSE
  103.  GOTO argf
  104. END IF
  105. RETURN
  106.  
  107. argf:
  108. SOUND 2000,2
  109. PRINT "ASave - Version 1.0  Copyright (C) 1993 by Thomas Dreibholz"
  110. PRINT ""
  111. PRINT "ASave bertr„gt Dateien vom der AT-Karte zum Amiga. Bei Textdateien findet"
  112. PRINT "jedoch keine Umwandlung von Zeichen statt! Sind diese Umwandlungen"
  113. PRINT "erforderlich, so sollte AWrite verwendet werden."
  114. PRINT ""
  115. PRINT "Aufruf: ASave [PC-Datei] [Amiga-Datei]"
  116. PRINT ""
  117. GOTO ende
  118.  
  119.  
  120. FUNCTION CheckVector(num) STATIC
  121.  REG %AX,(&H35*256)+num
  122.  CALL INTERRUPT &H21
  123.  segm=REG(%ES)
  124.  offs=REG(%BX)
  125.  DEF SEG = segm
  126.  IF (segm=0) OR (PEEK(offs)=207) THEN
  127.   CheckVector=0
  128.  ELSE
  129.   CheckVector=1
  130.  END IF
  131. END FUNCTION
  132.